package com.cyou.dream.context;

import com.cyou.dream.rule.param.AbstractRuleParam;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.Map;

/**
 * 规则上下文，负责传递数据给规则处理器
 */
@Data
@AllArgsConstructor
public class RuleContext {

    /**
     * 实际的key，会通过keyParams替换掉占位符，用于生成Redis中的key
     */
    private String actualKey;

    /**
     * 规则的key的参数
     */
    private Map<String, Object> ruleParams;

    /**
     * value的参数，传递给规则做判断，不知道传什么可以参见规则的文档。
     * <p>
     * 比如：{@link com.cyou.dream.rule.MultiStepCounterRule} 需要传递一个{@link com.cyou.dream.rule.param.MultiStepCounterParam}类，
     * 在类中定义步长。
     */
    private AbstractRuleParam valueParams;

}